<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>函数</title>
</head>
<body>

<script>
    //1.不带参数的函数
    //function 函数名(){}
    function sayHello() {
        console.log('Hello');
    }

    sayHello();


    //2.带参数的函数
    function sayHello2(name) {
        console.log('Hello,' + name);
    }

    sayHello2('张三');
    sayHello2(false)

    //3.形参和实参的个数问题
    function sayHello3(name, age) {
        console.log('Hello,' + name + '年龄：' + age);
    }

    sayHello3('张三');//3+undefined=NaN 未被赋值的形参为 undefined
    sayHello3('张三', 18, 20);//多余的实参不会报错，但是会被舍弃

    //4. arguments对象 用于保存传入函数的所有实参
    function sayHello4() {
        console.log(arguments);
        console.log(arguments[0]);
        console.log(arguments[1]);
    }

    sayHello4(50, 60);
    sayHello4(70, 50, 60);

    //5.函数的返回值
    function sum(a, b) {
        return a + b;
    }
    console.log("*********");
    console.log(sum(1, 2));

    //函数的第二种声明方式
    //将函数整体交给变量f6来保存,调用时使用变量名调用即可
    let f6 = function () {
        console.log('Hello');
    }
    console.log(typeof f6);
    f6();//函数名就是变量名

    //箭头函数
    const f7 = (n) => {
        console.log('Hello'+n);
    }
    f7('张三');
</script>
</body>
</html>